package com.bt7274.mapper;

import com.bt7274.pojo.ActivityRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 用户活动参与表 ：用户参与活动的记录 Mapper 接口
 * </p>
 *
 * @author hp
 * @since 2025-03-25
 */
@Mapper
public interface ActivityRecordMapper extends BaseMapper<ActivityRecord> {

    /**
     * 检查用户是否已参与活动
     * @param userId 用户ID
     * @param promotionId 活动ID
     * @return 是否已参与
     */
    boolean hasParticipated(@Param("userId") String userId, @Param("promotionId") String promotionId);

    /**
     * 获取活动参与人数
     * @param promotionId 活动ID
     * @return 参与人数
     */
    Long getParticipantCount(@Param("promotionId") String promotionId);

    /**
     * 获取用户的活动参与记录
     * @param userId 用户ID
     * @param offset 偏移量
     * @param limit 限制数量
     * @return 活动参与记录列表
     */
    List<ActivityRecord> getUserRecords(@Param("userId") String userId, @Param("offset") Integer offset, @Param("limit") Integer limit);

    /**
     * 获取活动的参与记录
     * @param promotionId 活动ID
     * @param offset 偏移量
     * @param limit 限制数量
     * @return 活动参与记录列表
     */
    List<ActivityRecord> getPromotionRecords(@Param("promotionId") String promotionId, @Param("offset") Integer offset, @Param("limit") Integer limit);

    /**
     * 获取种子相关的活动参与记录
     * @param torrentId 种子ID
     * @return 活动参与记录列表
     */
    List<ActivityRecord> getTorrentActivityRecords(@Param("torrentId") Long torrentId);

    /**
     * 获取用户种子相关的活动参与记录
     * @param userId 用户ID
     * @param torrentId 种子ID
     * @return 活动参与记录列表
     */
    List<ActivityRecord> getUserTorrentActivityRecords(@Param("userId") String userId, @Param("torrentId") Long torrentId);
}
